home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / demos / metanet / metro.sci < prev    next >
Text File  |  1999-09-16  |  11KB  |  231 lines

  1. function []=metro()
  2. //Scilab program for the travel by the tube in Paris
  3. //needs the file 'node2station' giving the fit between nodes and the names
  4. //of the stations
  5. //needs the execution of the program 'metrostart' for the data of the graph
  6. inin=file('open',SCI+'/demos/metanet/node2station','old');
  7. mamat=read(inin,388,1,'(a40)');
  8. file('close',inin);
  9. La=['Abbesses','Alesia','Alexandre Dumas','Alfort-Ecole Veterinaire','Alma-Marceau','Anatole-France','Anvers','Argentine','Arts et Metiers','Auber','Aubervilliers-Pantin','Avron'];
  10. Lb=['Balard','Barbes-Rochechouart','Bastille','Bel air','Belleville','Berault','Bercy','Billancourt','Bir-Hakeim','Blanche','Boissiere','Bolivar','Bonne-Nouvelle','Botzaris','Boucicaut','Boulets - Montreuil','Boulevard Massena','Boulevard Victor','Boulogn
  11. e - Jean Jaures','Boulogne - Pont de saint cloud','Bourse','Breguet-Sabin','Brochant','Buttes-Chaumont','Buzenval'];
  12. Lc=['Cadet','Cambronne','Campo-Formio','Cardinal Lemoine','Carrefour Pleyel','Censier-Daubenton','Chambre des deputes','Champ-de-Mars','champs-Elysees Clemenceau','Chardon Lagache','Charenton-Ecoles','Ch. de Gaulle-Etoile','Charles Michels','Charonne','Ch
  13. ateau d eau','Chateau de Vincennes','Chateau Landon','Chateau-Rouge','Chatelet','Chatelet-les-Halles','Chatillon-Montrouge','Chaussee d Antin','Chemin Vert','Chevaleret','Cite','Cite Universitaire','Colonel Fabien','Commerce','Concorde'];
  14. Lcc=['Convention','Corentin-Cariou','Corentin-Celton','Corvisart','Courcelles','Couronnes','Creteil-l Echat','Creteil Prefecture','Creteil Universite','Crimee','Croix de Chavaux'];
  15. Ld=['Danube','Daumesnil','Denfert-Rochereau','Dugommier','Dupleix','Duroc'];
  16. Le=['Ecole Militaire','Edgar Quinet','Eglise d Auteuil','Eglise de Pantin','Emile Zola','Etienne Marcel','Europe','Exelmans'];
  17. Lf=['Faidherbe-Chaligny','Falguiere','Felix Faure','Filles du Calvaire','Fort d Aubervilliers','Franklin D Roosevelt'];
  18. Lg=['Gabriel Peri','Gaite','Gallieni','Gambetta','Gare d Austerlitz','Gare de l Est','Gare de lyon','Gare du Nord','Garibaldi','Gentilly','George V','Glaciere','Goncourt','Guy Moquet'];
  19. Lh=['Havre Caumartin','Hoche','Hotel de Ville'];
  20. Li=['Iena','Invalides','Issy Plaine','Issy Ville','Ivry'];
  21. Lj=['Jacques Bonsergent','Jasmin','Jaures','Javel','Jourdain','Jules Joffrin','Jussieu'];
  22. Lk=['Kleber'];
  23. Ll=['La Chapelle','La Defense','La Fourche','Lamarck-Caulaincourt','La Motte Piquet','La Muette','Laplace','La Plaine Voyageurs','Latour Maubourg','Laumiere','Ledru Rollin','Le Kremlin Bicetre','Le Peletier','Les Gobelins','Les Halles','Les Sablons','Libe
  24. rte','Liege','Louis Blanc','Louise Michel','Lourmel','Louvre','Luxembourg'];
  25. Lm=['Mabillon','Madeleine','Mairie de clichy','Mairie de Montreuil','Mairie de St Ouen','Mairie des lilas','Mairie d Issy','Mairie d Ivry','Maison Blanche','Maison Alfort Les Julliottes','Maison Alfort Stade','Malakoff Plateau de Vanves','Malakoff Rue Eti
  26. enne Dolet','Malesherbes','Maraichers','Marcadet Poissonniers','Marcel Sembat','Marx Dormoy','Maubert Mutualite','Menilmontant','Michel Ange Auteuil','Michel Ange Molitor','Michel Bizot','Mirabeau','Miromesnil','Monceau','Monge','Montgallet'];
  27. Lmm=['Montparnasse Bienvenue','Mouton Duvernet'];
  28. Ln=['Nation','Nationale','Notre Dame de Lorette','Notre dame des Champs'];
  29. Lo=['Oberkampf','Odeon','Opera','Ourcq'];
  30. Lp=['Palais Royal','Parmentier','Passy','Pasteur','Pelleport','Pereire','Pere Lachaise','Pernety','Philippe Auguste','Picpus','Pierre Curie','Pigalle','Place de Clichy','Place des Fetes','Place d Italie','Plaisance','Poissoniere','Pont de l Alma','Pont de
  31.  Levallois Becon','Pont de Neuilly','Pont de Sevres','Pont Marie','Pont Neuf','Porte Dauphine','Porte d Auteuil','Porte de Bagnolet','Porte de Champeret','Porte de Charenton','Porte de Choisy','Porte de Clichy','Porte de Clignancourt'];
  32. Lpp=['Porte de la Chapelle','Porte de la Vilette','Porte de Montreuil','Porte de Pantin','Porte de St Cloud','Porte de St Ouen','Porte des Lilas','Porte de Vanves','Porte de Versailles','Porte de Vincennes','Porte d Italie','Porte d Ivry','Porte Doree','P
  33. orte d Orleans','Porte Maillot','Port Royal','Pre St Gervais','Pyramides','Pyrenees'];
  34. Lq=['Quai de la Gare','Quai de la Rapee','Quai d Orsay','Quatre Septembre'];
  35. Lr=['Rambuteau','Ranelagh','Raspail','Reaumur Sebastopol','Rennes','Republique','Reuilly Diderot','Richard Lenoir','Richelieu Drouot','Riquet','Robespierre','Rome','Rue de la Pompe','Rue du Bac','Rue Montmartre'];
  36. Ls=['Saint Ambroise','Saint Augustin','Saint Denis Basilique','Saint Denis Porte de Paris','Saint Fargeau','Saint Francois Xavier','Saint Georges','Saint Germain des Pres','Saint Jacques','Saint Lazare','Saint Mande Tourelle','Saint Marcel','Saint Maur','
  37. Saint Michel','Saint Paul','Saint Philippe du Roule','Saint Placide','Saint Sebastien Froissard','Saint Sulpice','Segur','Sentier','Sevres Babylone','Sevres Lecourbe','Simplon','Solferino','Stalingrad','Strasbourg St Denis','Sully Morland'];
  38. Lt=['Telegraphe','Temple','Ternes','Tolbiac','Trinite','Trocadero','Tuileries'];
  39. Lv=['Vaneau','Varenne','Vaugirard','Vavin','Victor Hugo','Villiers','Vincennes','Volontaires','Voltaire'];
  40. Lw=['Wagram'];
  41. Lz=['INRIA-Rocquencourt'];
  42. Lstation=[Lz,La,Lb,Lc,Lcc,Ld,Le,Lf,Lg,Lh,Li,Lj,Lk,Ll,Lm,Lmm,Ln,Lo,Lp,Lpp,Lq,Lr,Ls,Lt,Lv,Lw];
  43.  
  44. LA=[175,70,229,371,167,188,141,117,304,-1,368,227];
  45. LB=[52,140,212,206,251,349,198,24,14,143,112,269,154,264,50,226,-1,-1,2,1,158,237,146,268,228];
  46. LC=[138,26,102,83,363,80,184,-1,165,8,205,114,10,225,245,350,246,177,88,-1,111,302,220,196,87,-1,250,48,163,59];
  47. LCC=[276,57,74,122,253,374,376,375,275,356];
  48. LD=[263,296,68,199,13,44];
  49. LE=[54,66,6,370,11,379,131,21];
  50. LF=[210,62,49,239,369,300];
  51. LG=[367,105,325,324,287,244,213,280,361,-1,180,73,252,185];
  52. LH=[133,273,331];
  53. LI=[28,169,-1,-1,-1];
  54. LJ=[243,19,249,9,267,179,82];
  55. LK=[113];
  56. LL=[281,-1,145,176,12,18,-1,-1,101,270,211,194,137,79,236,119,204,148,336,130,51,181,-1];
  57. LM=[92,314,366,357,362,353,56,198,77,373,372,109,110,125,232,178,23,278,84,254,5,3,201,7,301,123,81,377];
  58. LMM=[47,69];
  59. LN=[299,195,173,96];
  60. LO=[310,85,135,271];
  61. LP=[161,256,15,45,259,127,323,106,230,207,192,142,144,341,75,107,139,168,189,120,25,89,91,116,4,258,129,203,190,187,186];
  62. LPP=[279,277,233,272,22,360,352,108,58,234,78,191,202,71',118,-1,262,160,266];
  63. LQ=[197,214,-1,159];
  64. LR=[235,20,67,156,97,308,347,222,149,274,355,147,17,99,152];
  65. LS=[223,171,365,364,260,63,174,93,72,132,348,216,255,86,219,378,95,221,94,41,157,98,42,380,100,340,155,217];
  66. LT=[282,381,121,76,172,16,162];
  67. LV=[104,64,60,65,115,124,-1,61,224];
  68. LW=[126];
  69. LZ=[-2];
  70.  
  71. Lnode=[LZ,LA,LB,LC,LCC,LD,LE,LF,LG,LH,LI,LJ,LK,LL,LM,LMM,LN,LO,LP,LPP,LQ,LR,LS,LT,LV,LW];
  72.  
  73. L1=[1;2];
  74. L2=[21;22;23;24;25];
  75. iter=1;
  76. while iter==1,
  77. changename=[];TT=[];
  78. Ldepart=0;
  79. Depart=108;Arrivee=108;Gr_typ='null';
  80. while (Lnode(Depart)==-1|Lnode(Arrivee)==-1),
  81.     Lnode(1)=-2;
  82.      Depart=x_choose(Lstation,'Choose the station of departure');
  83.     Arrivee=x_choose(Lstation,'Choose the station of arrival');
  84.     if(Depart==0|Arrivee==0) then return  end;
  85.     if (Lnode(Depart)==-1|Lnode(Arrivee)==-1) then
  86.       x_message(['You have chosen an RER station to the suburbs'; 
  87.           'The RER net will be added later']);
  88.     end;
  89.     if (Lnode(Depart)==-2) then
  90.       x_message(['Are you sure it''s time to leave?';
  91.           'If yes, you go to the entrance of the campus.';
  92.           'You take the INRIA shuttle to one of the 3 railway stations of Versailles.';
  93.           'Then you take the train to Paris (15-20 minutes).']), 
  94.       Lnode(Depart)=-1;
  95.     end;
  96.     rep=0;
  97.     if (Lnode(Arrivee)==-2) then 
  98.       rep=x_message(['You have chosen to visit a nice place.';
  99.           'It is a little bit complicated to reach the campus.';
  100.           'If you are a tourist you may be interested to know';
  101.           'that the buildings of the campus have been designed';
  102.           'by the American troups in Europe after the second world war';
  103.           'and you may prefer to visit the palace of Versailles.';
  104.           'In both cases the first part of the travel is the same.';
  105.           'If you want to know, click on Travel button'],..
  106.           ['Travel','Cancel']); 
  107.     end
  108.     if rep==2 then Lnode(Arrivee)=-1;end
  109.     if rep==1 then 
  110.       x_message(['INRIA-Rocquencourt is located near Versailles.';
  111.           'From Paris you have to take the train to Versailles and then the INRIA shuttle.';
  112.           'You have 3 possibilities from Paris:';
  113.           '- starting from Saint-Lazare station you reach the Versailles-Rive Droite station';
  114.           '- starting from Invalides station you reach the Versailles-Rive Gauche station';
  115.           '- starting from Montparnasse-Bienvenue station you reach the Versailles-Chantiers station']);    
  116.       Lnode(Arrivee)=-1;  
  117.     end
  118.       end
  119. g=load_graph(SCI+'/demos/metanet/Paris');
  120. gg=load_graph(SCI+'/demos/metanet/Paris');
  121. show_graph(gg,'rep');
  122. la1=g(7);lp1=g(8);ls1=g(9);
  123. NodeN=lp1(Lnode(Depart)+1)-lp1(Lnode(Depart))+1;
  124. duration=g(21);G5=g(5);
  125. i=1;
  126. Ldepart(1)=Lnode(Depart);
  127. for j=1:NodeN,
  128.   if duration(nodes_2_path([Lnode(Depart),ls1(lp1(Lnode(Depart))+j)],g))=4 then
  129.     Ldepart(i+1)=ls1(lp1(Lnode(Depart))+j);
  130.     i=i+1;
  131.   end
  132. end
  133. NodeN=size(Ldepart);    
  134. MinTemps=200;
  135. for k=1:NodeN(1),
  136.         p=shortest_path(Ldepart(k),Lnode(Arrivee),g);
  137.     Etime=size(p);nbarc=Etime(2);
  138.     temps=0;
  139.     Change=0;
  140.     i=1;
  141.     
  142.     temps=duration(p(1))+temps;
  143.     if duration(p(1))==4 then temps=temps-4;end 
  144.     for j=2:(nbarc-1),
  145.         temps=duration(p(j))+temps;    
  146.         if duration(p(j))==4 then
  147.         Change=Change+1;
  148.         ll=G5(p(j));
  149.         changename(Change)=mamat(ll);
  150.          end        
  151.     end
  152.  
  153.     temps=duration(p(nbarc))+temps;
  154.     if duration(p(nbarc))==4 then temps=temps-4;end; 
  155.  
  156.     if (temps<MinTemps) then
  157.         EndTemps=temps;
  158.         EndP=p;
  159.         EndChange=Change;
  160.     end,
  161. end;
  162. //show_arcs(EndP)
  163. ttt=path_2_nodes(EndP,g);
  164. ppp=nodes_2_path(ttt,gg);
  165. //show_arcs(ppp);
  166. //for i=1:5, show_nodes(ttt);show_arcs(ppp);end;
  167. show_arcs(ppp);show_nodes(ttt,'sup');
  168. name=g(7);
  169. road=name(ttt)';
  170. kk=size(road);
  171. clic='.'; v=[1];
  172. for i=1:kk(1), 
  173.   clac=part(road(i),v); 
  174.   if clac == clic then 
  175.     route(i)=road(i); 
  176.   else 
  177.     il=evstr(road(i)); route(i)= mamat(il); 
  178.   end
  179. end
  180. j=1;road=[];
  181. for i=1:kk(1), 
  182.   clac=part(route(i),v); 
  183.   if clac == clic then 
  184.     road(j)=route(i); 
  185.     TT(j)=ttt(i);j=j+1;
  186.   end
  187. end
  188. kk=size(road);routef=[];
  189. routef(1)=road(1);TTT(1)=TT(1);j=2;
  190. for i=2:kk(1), 
  191.   daor=road(i); 
  192.   if daor <> road(i-1) then 
  193.     routef(j)=road(i); 
  194.     TTT(j)=TT(i);j=j+1;
  195.   end
  196. end
  197. thick=xget("thickness")
  198. xset("thickness",3);
  199. xbasc();
  200. plot_graph(g); 
  201. kk=size(routef);xnodes=g(9);ynodes=g(10);
  202. for i=1:kk(1), 
  203.   x1=xnodes(TTT(i)); y1=ynodes(TTT(i));
  204.   xstring(x1,-y1,mamat(TTT(i)));
  205. end;
  206. ichoi=x_choose(['yes','no'],'Zoom of the path?');
  207. if ichoi==1 then
  208.   xbasc();
  209.   if TTT<>[] then
  210.     ah=min(xnodes(TTT));bh=max(xnodes(TTT));
  211.     av=min(ynodes(TTT));bv=max(ynodes(TTT));
  212.     plot_graph(g,ah,-bv,bh-ah,bv-av);
  213.     kk=size(routef);xnodes=g(9);ynodes=g(10);
  214.     for i=1:kk(1), 
  215.       x1=xnodes(TTT(i)); y1=ynodes(TTT(i));
  216.       xstring(x1,-y1,mamat(TTT(i)));
  217.     end
  218.   end
  219. end
  220. x_message(['Duration of the travel (in minutes): '+string(EndTemps) ; 
  221.            ' ' ;
  222.        'The number of changes is: '+string(EndChange);
  223.        string(changename);' '  ;
  224.        'You will go thru the following stations:';
  225.        string(routef);]);
  226. road=[];route=[];routef=[];changename=[];
  227. iter=x_choose(['yes','no'],'Another travel?');
  228. TTT=[];routef=[];road=[];
  229. end
  230. xset("thickness",thick);
  231.